﻿Public Class perCidade
    Inherits PersistenciaPadrao.AcessoBD

#Region "Métodos"

    Public Function selecionaCidadePorEstado(ByVal iCodEstado As Int32) As DataTable
        Dim sSql As String

        sSql = " SELECT codCidade, descCidade " & Environment.NewLine &
               " FROM end_cidades" & Environment.NewLine &
               " WHERE codEstado=@codEstado" & Environment.NewLine &
               " ORDER BY descCidade ASC"

        MyBase.limparParametros()
        MyBase.inserirParametro("@codEstado", iCodEstado)

        Return MyBase.executarConsulta(sSql, True)

    End Function

    Public Function selecionarCidade() As DataTable

        Dim sSql As String

        sSql = " SELECT " & Environment.NewLine &
               "    end_cidades.codCidade, " & Environment.NewLine &
               "    end_cidades.descCidade, " & Environment.NewLine &
               "    end_estado.codEstado, " & Environment.NewLine &
               "    end_estado.descEstado " & Environment.NewLine &
               " FROM end_cidades " & Environment.NewLine &
               " INNER JOIN end_estado ON end_cidades.codEstado = end_estado.codEstado " & Environment.NewLine &
               " ORDER BY descEstado,descCidade "

        Return MyBase.executarConsulta(sSql, True)

    End Function

    Public Function selecionarCidadeCodigo(ByVal iCodCidade As Int32) As DataRow

        Dim sSql As String
        Dim datDados As New DataTable

        sSql = " SELECT " & Environment.NewLine &
               "    end_cidades.*, " & Environment.NewLine &
               "    end_estado.codEstado, " & Environment.NewLine &
               "    end_estado.descEstado " & Environment.NewLine &
               " FROM " & Environment.NewLine &
               "    end_cidades " & Environment.NewLine &
               " INNER JOIN end_estado ON end_cidades.codEstado = end_estado.codEstado " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "    codCidade = @codCidade "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codCidade", iCodCidade)

        datDados = MyBase.executarConsulta(sSql, True)
        If datDados.Rows.Count > 0 Then
            Return datDados.Rows(0)
        Else
            Return Nothing
        End If

    End Function

    Public Function selecionarUF() As DataTable

        Dim sSql As String
        Dim datDados As New DataTable

        sSql = " SELECT " & Environment.NewLine &
               "    codEstado, " & Environment.NewLine &
               "    sigla " & Environment.NewLine &
               "  FROM " & Environment.NewLine &
               "    end_estado " & Environment.NewLine &
               " ORDER BY sigla"

        MyBase.limparParametros()

        Return MyBase.executarConsulta(sSql, True)

    End Function

    Public Function inserirCidade(ByVal sDescCidade As String,
                                  ByVal iCodUF As Int32,
                                  ByVal bCapital As Boolean) As Int32
        Dim sSql As String

        sSql = " INSERT INTO end_cidades " & Environment.NewLine &
               " ( " & Environment.NewLine &
               "    descCidade, " & Environment.NewLine &
               "    codEstado, " & Environment.NewLine &
               "    capital " & Environment.NewLine &
               " )" & Environment.NewLine &
               " VALUES" & Environment.NewLine &
               " (" & Environment.NewLine &
               "    @descCidade, " & Environment.NewLine &
               "    @codEstado, " & Environment.NewLine &
               "    @capital " & Environment.NewLine &
               " ); SELECT SCOPE_IDENTITY() "

        MyBase.limparParametros()
        MyBase.inserirParametro("@descCidade", sDescCidade)
        MyBase.inserirParametro("@codEstado", iCodUF)
        MyBase.inserirParametro("@capital", bCapital)

        Return MyBase.executarConsultaCampo(sSql, True)

    End Function

    Public Sub editarCidade(ByVal iCodCidade As Int32,
                            ByVal iCodUF As Int32,
                            ByVal sDescCidade As String,
                            ByVal bCapital As Boolean)

        Dim sSql As String

        sSql = " UPDATE end_cidades SET " & Environment.NewLine &
               "    descCidade = @descCidade, " & Environment.NewLine &
               "    codEstado = @codEstado, " & Environment.NewLine &
               "    capital = @capital " & Environment.NewLine &
               " WHERE codCidade = @codCidade "

        MyBase.limparParametros()
        MyBase.inserirParametro("@descCidade", sDescCidade)
        MyBase.inserirParametro("@codEstado", iCodUF)
        MyBase.inserirParametro("@capital", bCapital)
        MyBase.inserirParametro("@codCidade", iCodCidade)

        MyBase.executarAcao(sSql, True)

    End Sub

    Public Sub editarCapitalEstado(ByVal iCodUF As Int32)

        Dim sSql As String

        sSql = " UPDATE end_cidades SET " & Environment.NewLine &
               "    capital = @capital " & Environment.NewLine &
               " WHERE codEstado = @codEstado "

        MyBase.limparParametros()
        MyBase.inserirParametro("@capital", False)
        MyBase.inserirParametro("@codEstado", iCodUF)

        MyBase.executarAcao(sSql, True)

    End Sub

    Public Sub excluirCidade(ByVal iCodCidade As Int32)

        Dim sSql As String

        sSql = " DELETE FROM " & Environment.NewLine &
               "    end_cidades " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "    codCidade = @codCidade; "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codCidade", iCodCidade)

        MyBase.executarAcao(sSql, True)

    End Sub

    Public Function validarExclusaoCidade(ByVal iCodCidade As Int32) As Boolean

        Dim sSql As String

        sSql = " SELECT " & Environment.NewLine &
               "    end_bairros.codCidade " &
               " FROM  " & Environment.NewLine &
               "    end_logradouros " & Environment.NewLine &
               " INNER JOIN end_bairros ON end_logradouros.codBairro = end_bairros.codBairro " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "    end_bairros.codCidade = @codCidade "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codCidade", iCodCidade)

        Return MyBase.executarConsulta(sSql, True).Rows.Count = 0

    End Function

    Public Function validarCidade(ByVal iCodCidade As Int32,
                                  ByVal iCodUF As Int32,
                                  ByVal sCidade As String) As Boolean

        Dim sSql As String

        sSql = " SELECT " & Environment.NewLine &
               "     end_cidades.* " &
               " FROM  " & Environment.NewLine &
               "     end_cidades " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "     descCidade = @descCidade " & Environment.NewLine &
               " AND codEstado = @codEstado " & Environment.NewLine &
               " AND codCidade <> @codCidade "

        MyBase.limparParametros()
        MyBase.inserirParametro("@descCidade", sCidade)
        MyBase.inserirParametro("@codEstado", iCodUF)
        MyBase.inserirParametro("@codCidade", iCodCidade)

        Return MyBase.executarConsulta(sSql, True).Rows.Count = 0

    End Function

    Public Function selecionarCidadeEstado(ByVal iCodEstado As Int32,
                                           ByVal sCidade As String) As DataRow

        Dim sSql As String
        Dim datDados As New DataTable

        sSql = " SELECT " & Environment.NewLine &
               "    end_cidades.* " & Environment.NewLine &
               " FROM " & Environment.NewLine &
               "    end_cidades " & Environment.NewLine &
               " INNER JOIN end_estado ON end_cidades.codEstado = end_uf.codEstado " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "     end_cidades.codEstado = @codEstado " & Environment.NewLine &
               " AND descCidade = @descCidade "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codEstado", iCodEstado)
        MyBase.inserirParametro("@descCidade", sCidade)

        datDados = MyBase.executarConsulta(sSql, True)
        If datDados.Rows.Count > 0 Then
            Return datDados.Rows(0)
        Else
            Return Nothing
        End If

    End Function

    Public Function selecionarCapitalEstado(ByVal iCodEstado As Int32,
                                            ByVal iCodCidade As Int32) As DataRow

        Dim sSql As String
        Dim datDados As New DataTable

        sSql = " SELECT " & Environment.NewLine &
               "    end_cidades.* " & Environment.NewLine &
               " FROM " & Environment.NewLine &
               "    end_cidades " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "     codEstado = @codEstado " & Environment.NewLine &
               " AND codCidade = @codCidade " &
               " AND capital = @capital "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codEstado", iCodEstado)
        MyBase.inserirParametro("@codCidade", iCodCidade)
        MyBase.inserirParametro("@capital", True)

        datDados = MyBase.executarConsulta(sSql, True)
        If datDados.Rows.Count > 0 Then
            Return datDados.Rows(0)
        Else
            Return Nothing
        End If

    End Function

    Public Function retornarCodCapitalEstado(ByVal iCodEstado As Int32) As Int32

        Dim sSql As String
        Dim datDados As New DataTable

        sSql = " SELECT " & Environment.NewLine &
               "    end_cidades.codCidade " & Environment.NewLine &
               " FROM " & Environment.NewLine &
               "    end_cidades " & Environment.NewLine &
               " WHERE " & Environment.NewLine &
               "     codEstado = @codEstado " & Environment.NewLine &
               " AND capital = @capital "

        MyBase.limparParametros()
        MyBase.inserirParametro("@codEstado", iCodEstado)
        MyBase.inserirParametro("@capital", True)

        datDados = MyBase.executarConsulta(sSql, True)
        If datDados.Rows.Count > 0 Then
            Return datDados.Rows(0).Item("codCidade")
        Else
            Return 0
        End If

    End Function

#End Region
    
End Class
